/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Model;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import javax.swing.JOptionPane;

/**
 *
 * @author Joao
 */
public class FuncionarioDAO {

    public ArrayList<FuncionarioBO> lista_funcionarios_com_filtro(String coluna_filtro, String texto_filtro) {
        Connection conexao;
        Statement executorSQL;

        try {
            conexao = ConexaoSingleton.getInstance().getConnection();
            executorSQL = conexao.createStatement();

            String SQL = "select * from tb_funcionario where " + coluna_filtro
                    + " like '%" + texto_filtro + "%';";

            ResultSet resultado = executorSQL.executeQuery(SQL);
            ArrayList<FuncionarioBO> lista = new ArrayList<FuncionarioBO>();
            while (resultado.next()) {
                FuncionarioBO func = new FuncionarioBO(
                        resultado.getString("sNome"),
                        resultado.getString("sCpf"),
                        resultado.getString("sRg"),
                        resultado.getString("sEndereco"),
                        resultado.getString("sTelefone"),
                        resultado.getString("sCelular"),
                        resultado.getString("sEmail"),
                        resultado.getInt("nCep"),
                        resultado.getString("sCidade"),
                        resultado.getString("sEstado"),
                        resultado.getInt("nFlSituacao"),
                        resultado.getInt("nCodFuncionario"),
                        resultado.getInt("nPis"),
                        resultado.getString("sCargo"),
                        resultado.getDouble("dSalario"));

                lista.add(func);
            }
            executorSQL.close();
            return lista;
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "FuncionarioDAO.lista_Funcionario-Erro: " + e.getMessage());
            return new ArrayList<FuncionarioBO>();
        }
    }

    public ArrayList<FuncionarioBO> lista_funcionario() {
        Connection conexao;
        Statement executorSQL;

        try {

            conexao = ConexaoSingleton.getInstance().getConnection();
            executorSQL = conexao.createStatement();

            String SQL = "select * from tb_funcionario;";
            ResultSet resultado = executorSQL.executeQuery(SQL);
            ArrayList<FuncionarioBO> lista = new ArrayList<FuncionarioBO>();

            while (resultado.next()) {
                FuncionarioBO func = new FuncionarioBO(
                        resultado.getString("sNome"),
                        resultado.getString("sCpf"),
                        resultado.getString("sRg"),
                        resultado.getString("sEndereco"),
                        resultado.getString("sTelefone"),
                        resultado.getString("sCelular"),
                        resultado.getString("sEmail"),
                        resultado.getInt("nCep"),
                        resultado.getString("sCidade"),
                        resultado.getString("sEstado"),
                        resultado.getInt("nFlSituacao"),
                        resultado.getInt("nCodFuncionario"),
                        resultado.getInt("nPis"),
                        resultado.getString("sCargo"),
                        resultado.getDouble("dSalario"));
                lista.add(func);
            }

            executorSQL.close();
            return lista;

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "FuncionarioDAO.lista_Funcionarios-Erro: " + e.getMessage());
            return new ArrayList<FuncionarioBO>();
        }
    }

    public boolean insere_funcionario(FuncionarioBO func) {

        Connection conexao;
        Statement executorSQL;

        try {
            conexao = ConexaoSingleton.getInstance().getConnection();
            executorSQL = conexao.createStatement();

            String SQL = "INSERT INTO tb_funcionario (sNome,sCpf,sRg,sEndereco,sTelefone,sCelular,sEmail,sCidade,sEstado,nCep,nPis,sCargo,dSalario,nFlSituacao) VALUES ('" + func.getsNomeRazaoSocial() + "','"
                    + func.getsCpfCnpj() + "','"
                    + func.getsRg() + "','"
                    + func.getsEndereco() + "','"
                    + func.getsTelefone() + "','"
                    + func.getsCelular() + "','"
                    + func.getsEmail() + "','"
                    + func.getsCidade() + "','"
                    + func.getsEstado() + "',"
                    + func.getnCep() + ","
                    + func.getnPis() + ",'"
                    + func.getSCargo() + "',"
                    + func.getdSalario() + ",1);";

            System.out.println("Comando SQL: " + SQL);
            executorSQL.execute(SQL);
            executorSQL.close();
            return true;

        } catch (SQLException e) {
            JOptionPane.showMessageDialog(null, "Insira todos os Dados obrigatorios." + e);
            return false;
        }

    }

    public boolean atualiza_funcionario(FuncionarioBO func) {

        Connection conexao;
        Statement executorSQL;

        try {
            conexao = ConexaoSingleton.getInstance().getConnection();
            executorSQL = conexao.createStatement();

            String SQL = "update tb_funcionario set sNome='" + func.getsNomeRazaoSocial()
                    + "',sCpf='" + func.getsCpfCnpj()
                    + "',sRg='" + func.getsRg()
                    + "',sEndereco='" + func.getsEndereco()
                    + "',sTelefone='" + func.getsTelefone()
                    + "',sCelular='" + func.getsCelular()
                    + "',sEmail='" + func.getsEmail()
                    + "',sCidade='" + func.getsCidade()
                    + "',sEstado='" + func.getsEstado()
                    + "',nCep=" + func.getnCep()
                    + ",nPis=" + func.getnPis()
                    + ",sCargo='" + func.getSCargo()
                    + "',dSalario=" + func.getdSalario()
                    + ",nFlSituacao=" + func.getnFlSituacao()
                    + " where nCodFuncionario =" + func.getnCodFuncionario()
                    + ";";

            System.out.println("Comando SQL: " + SQL);
            boolean resultado = executorSQL.execute(SQL);
            executorSQL.close();
            return resultado;

        } catch (SQLException e) {
            JOptionPane.showMessageDialog(null, "Insira todos os Dados obrigatorios. " + e);
            return false;
        }
    }
}
